home *** CD-ROM | disk | FTP | other *** search
- (define (implode x)
- (define y "")
- (while (not (atom? x))
- (cond ((string? (car x))
- (set! y (string-append y
- (make-string 1 (string-ref (car x) 0)))))
- ((symbol? (car x))
- (set! y (string-append y
- (make-string 1 (integer->char (symbol->ASCII (car x)))))))
- ((integer? (car x))
- (set! y (string-append y
- (make-string 1 (integer->char (car x))))))
- (else (error "arg to implode must be a symbol or a string or an integer" (car x))))
- (set! x (cdr x)))
- (string->symbol y))
-
- (define (explode x)
- (cond ((symbol? x) (set! x (symbol->string x)))
- ((integer? x) (set! x (integer->string x 10)))
- ((string? x))
- (else (error "arg to explode must be a symbol or a string or an integer" x)))
- (do ((i 0 (1+ i))
- (res nil))
- ((= i (string-length x)) (reverse! res))
- (set! res
- (cons (string->symbol (make-string 1 (string-ref x i)))
- res))))
-